
axios.defaults.baseURL='http://localhost:8080'
//axios.defaults.baseURL='http://47.108.158.54:8888'
Vue.prototype.$http = axios

// 定义当前不需要登录就能访问的页面
let passPage = ["index.html","callback.html","binder.html","exam.html"];
let url = location.href;

let isRun = false;  // 是否放行
if(url.endsWith("/")){  // 如果url以/结尾,说明要访问首页,就直接放行
    isRun = true;
}else{
    for(let i=0;i<passPage.length;i++){
        let page = passPage[i];
        if(url.indexOf(page) > -1){
            isRun = true;
            break;
        }
    }
}

if(!isRun){
    // 如果不放行,判断当前有没有登录
    let loginUser = localStorage.getItem("loginUser");
    if(!loginUser){  //
        alert("该操作需要登录，请先登录!");
        location.href = "/index.html";
    }
}

// axios请求拦截器:添加请求拦截器，在请求头中加token
axios.interceptors.request.use(
    config => {
        // 从localStorage中获取token
        let token = localStorage.getItem("token");

        // 如果token有值,我们就放到请求头里面
        if (token) {
            config.headers.token = token;
        }
        return config
    },
    error => {
        return Promise.reject(error)
    })

// 响应拦截器 : 后端响应给前端接口的数据,
axios.interceptors.response.use(function(response){
    //对返回的数据进行操作
    let result = response.data;
    if(!result.success && result.msg == "noLogin"){
        alert("该操作需要登录，请先登录!");
        localStorage.removeItem("token");
        localStorage.removeItem("loginUser");
        location.href = "/index.html";
        return ;
    }else{
        return response
    }
},function(err){
    return Promise.reject(err)
})

function url2Param(url){
    let paramStr = url.split("?")[1];   // 根据?进行分割,拿到?后面的值
    let obj  = {};
    if(paramStr){ // typeId=27&xxx=yyy&xxx1=xxx2
        let paramArray = paramStr.split("&");
        for(let i=0;i<paramArray.length;i++){   // i=0 typeId=27 i=1 xxx=yyy i=2 xxx1=xx2
            let paramName = paramArray[i].split("=")[0];
            let paramValue = paramArray[i].split("=")[1];
            // 因为paramName它的值不是固定不变,所以要给query对象设置动态属性
            obj[paramName] = paramValue;
        }
    }
    return obj;
}

